package cn.tedu.spring.auto;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;

/**
 * 依赖注入的类     想要获取的Spring Bean对象
 */
@Repository
public class UserCache {

    /*
    @Autowired  注解装配规则
    1、如果根据类型进行装配，不能根据Bean对象进行装配
    2、如果多个类型匹配的Bean对象，则抛出异常[1个接口或者多个实现类的情况]

    @Qualifier注解
    1、如果IoC容器中Spring Bean对象的名称进行装配
    2、经常结合Autowired注解一起使用
     */
    @Autowired

    // 根据spring Bean对象名称进行装配，类名首字母小写，这里换为大写，那么在IoC容器当中找不到对应的Bean对象，所以会抛出异常
    // 但是如果我们使用@Component(Value = "名称")  注意Value的值将是找的Bean对象的名称
    // 但是一般不建议使用@Component(Value = "名称")
    @Qualifier("CacheImpl1")
    private Cache cache;

    public Cache getCache() {
        return cache;
    }
}
